package com.mercury.ec.module.air.controller.admin.order.vo.orderprice;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;

@Data
@Schema(description = "管理后台 - 机票订单价格新增 Request VO")
public class AirOrderPriceCreateReqVO {

    @Schema(description = "行程序号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "行程序号不能为空")
    private Integer routeSerialNo;

    @Schema(description = "乘客序号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "乘客序号不能为空")
    private Integer passengerSerialNo;

    @Schema(description = "票价级别FareBasis", example = "ZPR7WNNP")
    @Length(max = 64, message = "票价级别FareBasis长度不能超过64")
    private String fareBasis;

    @Schema(description = "出票代码")
    @Length(max = 8, message = "出票代码长度不能超过8")
    private String airlineIssueNo;

    @Schema(description = "票号")
    @Length(max = 16, message = "票号长度不能超过16")
    private String ticketNo;

    @Schema(description = "终止票号")
    @Length(max = 16, message = "终止票号长度不能超过16")
    private String ticketLastNo;

    @Schema(description = "打票机号")
    @Length(max = 16, message = "打票机号长度不能超过16")
    private String ticketVendingMachineNo;

    @Schema(description = "编码客票状态", example = "VOID")
    @Length(max = 32, message = "编码客票状态长度不能超过32")
    private String ticketStatus;

    @Schema(description = "附加费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "附加费不能为空")
    private BigDecimal saleAdditionalFee;

    @Schema(description = "服务费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "服务费不能为空")
    private BigDecimal saleServiceFee;

    @Schema(description = "升舱费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "升舱费不能为空")
    private BigDecimal saleUpgradeFee;

    @Schema(description = "改期费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "改期费不能为空")
    private BigDecimal saleChangeFee;

    @Schema(description = "退票费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "退票费率不能为空")
    private BigDecimal saleReturnFeeRate;

    @Schema(description = "退票费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "退票费不能为空")
    private BigDecimal saleReturnFee;

    @Schema(description = "票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "17704")
    @NotNull(message = "票面价不能为空")
    private BigDecimal saleTicketPrice;

    @Schema(description = "销售价", requiredMode = Schema.RequiredMode.REQUIRED, example = "30919")
    @NotNull(message = "销售价不能为空")
    private BigDecimal salePrice;

    @Schema(description = "已用票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "8877")
    @NotNull(message = "已用票面价不能为空")
    private BigDecimal saleUsedPrice;

    @Schema(description = "机建税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "机建税不能为空")
    private BigDecimal saleAirportTax;

    @Schema(description = "已用机建税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用机建税不能为空")
    private BigDecimal saleUsedAirportTax;

    @Schema(description = "燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "燃油税不能为空")
    private BigDecimal saleOilTax;

    @Schema(description = "已用燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用燃油税不能为空")
    private BigDecimal saleUsedOilTax;

    @Schema(description = "销售税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "销售税不能为空")
    private BigDecimal saleTax;

    @Schema(description = "已用销售税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用销售税不能为空")
    private BigDecimal saleUsedTax;

    @Schema(description = "代理费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "代理费率不能为空")
    private BigDecimal saleAgencyFeeRate;

    @Schema(description = "代理费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "代理费不能为空")
    private BigDecimal saleAgencyFee;

    @Schema(description = "后返费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "后返费率不能为空")
    private BigDecimal saleBackRebateFeeRate;

    @Schema(description = "后返费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "后返费不能为空")
    private BigDecimal saleBackRebateFee;

    @Schema(description = "记奖价", requiredMode = Schema.RequiredMode.REQUIRED, example = "28158")
    @NotNull(message = "记奖价不能为空")
    private BigDecimal salePrizePrice;

    @Schema(description = "记奖税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "记奖税不能为空")
    private BigDecimal salePrizeTax;

    @Schema(description = "采购附加费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购附加费不能为空")
    private BigDecimal purchaseAdditionalFee;

    @Schema(description = "采购服务费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购服务费不能为空")
    private BigDecimal purchaseServiceFee;

    @Schema(description = "采购升舱费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购升舱费不能为空")
    private BigDecimal purchaseUpgradeFee;

    @Schema(description = "采购改期费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购改期费不能为空")
    private BigDecimal purchaseChangeFee;

    @Schema(description = "采购退票费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购退票费率不能为空")
    private BigDecimal purchaseReturnFeeRate;

    @Schema(description = "采购退票费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购退票费不能为空")
    private BigDecimal purchaseReturnFee;

    @Schema(description = "采购票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "18086")
    @NotNull(message = "采购票面价不能为空")
    private BigDecimal purchaseTicketPrice;

    @Schema(description = "采购价", requiredMode = Schema.RequiredMode.REQUIRED, example = "29611")
    @NotNull(message = "采购价不能为空")
    private BigDecimal purchasePrice;

    @Schema(description = "已用采购票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "32526")
    @NotNull(message = "已用采购票面价不能为空")
    private BigDecimal purchaseUsedPrice;

    @Schema(description = "采购机建税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购机建税不能为空")
    private BigDecimal purchaseAirportTax;

    @Schema(description = "已用采购机建税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用采购机建税不能为空")
    private BigDecimal purchaseUsedAirportTax;
    @Schema(description = "采购燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购燃油税不能为空")
    private BigDecimal purchaseOilTax;

    @Schema(description = "已用采购燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用采购燃油税不能为空")
    private BigDecimal purchaseUsedOilTax;

    @Schema(description = "采购税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购税不能为空")
    private BigDecimal purchaseTax;

    @Schema(description = "已用采购税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "已用采购税不能为空")
    private BigDecimal purchaseUsedTax;

    @Schema(description = "采购代理费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购代理费率不能为空")
    private BigDecimal purchaseAgencyFeeRate;

    @Schema(description = "采购代理费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购代理费不能为空")
    private BigDecimal purchaseAgencyFee;

    @Schema(description = "采购后返费率", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购后返费率不能为空")
    private BigDecimal purchaseBackRebateFeeRate;

    @Schema(description = "采购后返费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购后返费不能为空")
    private BigDecimal purchaseBackRebateFee;

    @Schema(description = "采购记奖价", requiredMode = Schema.RequiredMode.REQUIRED, example = "8433")
    @NotNull(message = "采购记奖价不能为空")
    private BigDecimal purchasePrizePrice;

    @Schema(description = "采购记奖税", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "采购记奖税不能为空")
    private BigDecimal purchasePrizeTax;
}
